package web

import (
	"FastDevelopGo/src/base/log"
	"FastDevelopGo/src/base/web/router"
	"github.com/gin-gonic/gin"
	"github.com/spf13/viper"
	"go.uber.org/zap"
)

type WebConfig struct {
	Host string `json:"host,omitempty"`
	Port string `json:"port,omitempty"`
}

// web配置文件对象，用于全局的配置初始使用
var webConfig WebConfig

func InitGin() {
	initGinConfig()
	startGin()
}

// 初始web相关的配置文件和对象
func initGinConfig() {
	// 初始读取配置文件
	if err := viper.UnmarshalKey("web", &webConfig); err != nil {
		log.Logger.Error("读取配置文件时发生致命错误：", zap.Error(err))
		return
	}
}

// 核心启动gin框架函数，主函数
func startGin() {
	// 初始化基础配置
	r := gin.Default()
	// 初始化网关
	router.InitRouter(r)
	r.Run(webConfig.Host + ":" + webConfig.Port)
}
